package com.example.rabc.service;

import com.example.rabc.entity.Permission;
import com.example.rabc.service.PermissionComponent;

import java.util.List;

public interface PermissionService {
    Permission createPermission(Permission permission);
    Permission updatePermission(Long permissionId, Permission permission);
    void deletePermission(Long permissionId);
    Permission getPermissionById(Long permissionId);
    Permission getPermissionByCode(String permissionCode);
    List<Permission> getAllPermissions();
    List<Permission> getPermissionsByResourceType(String resourceType);

    /**
     * 获取权限树结构
     * @param rootPermissionId 根权限ID，如果为null则构建整棵树
     * @return 权限树根节点
     */
    PermissionComponent getPermissionTree(Long rootPermissionId);

    /**
     * 检查用户是否具有指定权限（基于权限树）
     * @param userId 用户ID
     * @param permissionCode 权限代码
     * @return 是否具有权限
     */
    boolean checkUserPermission(Long userId, String permissionCode);

    /**
     * 获取用户权限树
     * @param userId 用户ID
     * @return 用户权限树
     */
    List<PermissionComponent> getUserPermissionTree(Long userId);
}